﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using SC.UserCenter.Infra;
using Volo.Abp.Domain.Repositories;

namespace Acme.BookStore.Goods
{
    public interface IProductDisplayServices
    { 
        /// <summary>
      /// 显示列表
      /// </summary>
      /// <returns></returns>
        Task<ApiResult> GetProductsAsync(GetProductsRequest request);
        /// <summary>
        /// 添加商品
        /// </summary>
        /// <param name="productDto"></param>
        /// <returns></returns>
        Task<ApiResult> InsertProductAsync(ProductDto productDto);
        /// <summary>
        /// 根据id获取商品
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<ApiResult> FindProductAsync(Guid? id);
        /// <summary>
        /// 更新商品
        /// </summary>
        /// <param name="productDto"></param>
        /// <returns></returns>
        Task<ApiResult> UpdateProductAsync(UpdateProductDto productDto);
        /// <summary>
        /// 删除商品
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task<ApiResult> DeleteProductAsync(List<Guid> Ids);
        /// <summary>
        /// 批量更新商品上下架
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task<ApiResult> LoadingUnloadingtAsync(List<Guid> Ids);
        /// <summary>
        /// 上下架
        /// </summary>
        /// <param name="ProductByKeyworDTO"></param>
        /// <returns></returns>
        Task<ApiResult> GetProductByCategoryAsync(GetProductByCategoryDTO Id);
        
        /// <summary>
        /// 更新库存
        /// </summary>
        /// <param name="id"></param>
        /// <param name="stock"></param>
        /// <returns></returns>
        Task<ApiResult> UpdateStockAsync(UpdateStockRequest request);
        /// <summary>
        /// 更改排序
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<ApiResult> GetProductByKeywordAsync(UpdateInStockRequest request);
        /// <summary>
        /// 获取商品
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<ApiResult> GetProductAsync(GetProducDTO request);
    }
}
